package com.turing.post.organization.util;

import java.math.BigInteger;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 发卡商数据访问接口
 * 
 * @author zxp
 * @Dec 17, 2012
 */
@Remote
@Local
public interface IssueCompanyDao {

	/**
	 * 根据发卡商主键编号查询发卡商
	 * 
	 * @param issueCompanyNo
	 *            发卡商编号
	 * @return IssueCompany 发卡商
	 */
	public IssueCompany getIssueCompanyByIssueCompanyNo(String issueCompanyNo);

	/**
	 * 修改前锁定表
	 * 
	 * @param issueCompanyNo
	 *            发卡商编号
	 * @return 发卡商信息
	 */
	public IssueCompany getIssueCompanyForUpdate(String issueCompanyNo);

	/**
	 * 根据发卡商名称查询发卡商
	 * 
	 * @param issueCompanyName
	 *            发卡商名称
	 * @return IssueCompany 发卡商
	 */
	public IssueCompany getIssueCompanyByIssueCompanyName(
			String issueCompanyName);

	/**
	 * 分页查询
	 * 
	 * @param page
	 *            页码
	 * @param issueCompanyName
	 *            发卡商名称
	 * @return List 发卡商列表
	 */
	public List<IssueCompany> getIssueCompanyList(Integer page,
			String issueCompanyName);

	/**
	 * 查询记录条数
	 * 
	 * @param issueCompanyName
	 *            发卡商名称
	 * @return BigInteger 记录总数
	 */
	public BigInteger getIssueCompanyTotal(String issueCompanyName);

	/**
	 * 新增发卡商
	 * 
	 * @param issueCompany
	 *            发卡商
	 */
	public void insertIssueCompany(IssueCompany issueCompany)
			throws PCPSApplicationException;

	/**
	 * 修改发卡商
	 * 
	 * @param issueCompany
	 *            发卡商
	 */
	public void updateIssueCompany(IssueCompany issueCompany)
			throws PCPSApplicationException;

	/**
	 * 获取发卡商下拉列表
	 * 
	 * @return List 发卡商列表
	 */
	public List<IssueCompany> getDropDownIssueCompany();

	// /**
	// * @树形分层目录判断查询
	// * @param operBranchNo
	// * @return
	// */
	// public Integer SaleCompanyAndSaleBranchMinLen(String operBranchNo);
	//
	// /**
	// * @根据登录用户发卡商号查询销售机构及分支机构
	// * @param operBranchNo
	// * @return
	// */
	// public List<OrganTreeList> getSaleCompanyAndSaleBranchList(
	// String operBranchNo, Integer minLen);

	// /**
	// * @树形分层目录判断查询 查询发卡商下分支机构，销售商，销售商分支机构
	// * @param operBranchNo
	// * @return
	// */
	// public Integer getIssueBranchAndSaleCompanyAndSaleBranchMinLen(String
	// operBranchNo);
	//
	// /**
	// * @根据登录用户发卡商号 查询发卡商下分支机构，销售商，销售商分支机构
	// * @param operBranchNo
	// * @return
	// */
	// public List<OrganTreeList>
	// getIssueBranchAndSaleCompanyAndSaleBranchMinLen(
	// String operBranchNo, Integer minLen);
}
